#ifndef __gl_renderer_h__
#define __gl_renderer_h__

#include "v3d_renderer.h"


class GlRenderer: public V3dRenderer
{
protected: 

public:
	GlRenderer(void);
	~GlRenderer(void);

	void Resize(int32 width, int32 height);
	virtual void Update();

	virtual int	Render(ModelData *md);
	
	//render only particular mesh of model
	//TBD: should outside world have access to meshes...
	//virtual int	Render(ModelData *md, int *meshIds , int totalMeshIds = 1);

	void InitRenderer();


	//------------active material property-----------
	//currently coding w.r.t gl so not in v3d_renderer, after redesign it will shift to v3d
	glm::vec4	actMatAmbient;
	glm::vec4	actMatDiffuse;
	glm::vec4	actMatSpecular;
	glm::vec2	actMatShine;
	glm::vec4	actMatEmission;

	void SetSurfaceMaterialProperty(glm::vec4 *ambient, glm::vec4 *diffuse, glm::vec4 *specular, glm::vec2 *shine, glm::vec4 *emission, bool force = false);
	
};


#endif	//__gl_renderer_h__

